// inject.js

(function() {
    // 指定要监听的接口前缀
    const targetUrl = '/wxtapi'; // 请替换为您要监听的接口前缀
  
    // 拦截 fetch 请求
    const originalFetch = window.fetch;
    console.log('--------fetch-------------')
    window.fetch = function(...args) {
      return originalFetch.apply(this, args).then(async response => {
        const clonedResponse = response.clone();
        const url = response.url;
  
        if (url.startsWith(targetUrl)) {
          try {
            await clonedResponse.json();
            // 响应是 JSON 格式，无需处理
            window.postMessage({
                type: 'nonJsonResponse',
                url: url
              }, '*');
          } catch (e) {
            // 响应不是 JSON 格式，发送消息给内容脚本
            window.postMessage({
              type: 'nonJsonResponse',
              url: url
            }, '*');
          }
        }
  
        return response;
      });
    };
  
    // 拦截 XMLHttpRequest 请求
    const originalOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function(method, url, async, user, password) {
        console.log('----------------------')
      this._url = url;
      originalOpen.apply(this, arguments);
    };
  
    const originalSend = XMLHttpRequest.prototype.send;
    XMLHttpRequest.prototype.send = function(body) {
      this.addEventListener('load', function() {
        console.log(this._url)



        if (this._url.startsWith(targetUrl)) {
          try {
            let data = JSON.parse(this.responseText);
            if (data.hasOwnProperty('code') && data.code != 200) {
                // 处理逻辑
                // code 不为 200，发送消息给内容脚本
            window.postMessage({
                type: 'codeNot200',
                url: this._url,
              }, '*');
              }
              
            // 响应是 JSON 格式，无需处理
          } catch (e) {
            // 响应不是 JSON 格式，发送消息给内容脚本
            window.postMessage({
              type: 'nonJsonResponse',
              url: this._url
            }, '*');
          }
        }
      });
      originalSend.apply(this, arguments);
    };
  })();
  